﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SOAPServices.Persistencia;
using SOAPServices.Dominio;

namespace SOAPServices
{
    public class Articulos : IArticulos
    {
        private ArticuloDAO articuloDAO = null;
        private ArticuloDAO ArticuloDAO 
        {
            get
            {
                if (articuloDAO == null)
                    articuloDAO = new ArticuloDAO();
                return articuloDAO;
            }

        }

        public Articulo crearArticulo(int codigo, string nombre, int estado)
        {
            ICollection<Articulo> articulos = null;
            articulos = ListarArticulo();
            foreach (Articulo art in articulos)
                if (art.Nombre==nombre) throw new EntidadRepetidaExceptiom("Artículo repetido");

                
            Articulo articuloACrear = new Articulo()
                {
                    Codigo = codigo,
                    Nombre = nombre,
                    Estado = estado
                };
            return ArticuloDAO.Crear(articuloACrear);
       }


        public Articulo crearArticulo(int codigo, string nombre, int estado, int uc)
        {
            //Sede sedeExistente = SedeDAO.Obtener(sede);
            Articulo articuloACrear = new Articulo()
            {
                Codigo = codigo,
                Nombre = nombre,
                Estado = estado
            };
            return ArticuloDAO.Crear(articuloACrear);
        }

        public Articulo ObtenerArticulo(int codigo)
        {
            return ArticuloDAO.Obtener(codigo);
        }

        public Articulo modificarArticulo(int codigo, string nombre, int estado)
        {
            Articulo articuloAModificar = new Articulo()
            {
                Codigo = codigo,
                Nombre = nombre,
                Estado = estado
            };
            return ArticuloDAO.Modificar(articuloAModificar);
        }

        public void EliminarArticulo(int codigo)
        {
            Articulo articuloExixtente = ArticuloDAO.Obtener(codigo);
            ArticuloDAO.Eliminar(articuloExixtente);
        }

        public List<Articulo> ListarArticulo()
        {
            return ArticuloDAO.ListarTodos().ToList();
        }


    }
}
